package com.monitor.system.service.impl;

import java.math.BigDecimal;
import java.util.List;
import com.monitor.common.utils.DateUtils;
import com.monitor.common.utils.StringUtils;
import com.monitor.system.domain.DataCenter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.monitor.system.mapper.BrandMapper;
import com.monitor.system.domain.Brand;
import com.monitor.system.service.IBrandService;

/**
 * 品牌数据中心Service业务层处理
 * 
 * @author monitor
 * @date 2024-06-11
 */
@Service
public class BrandServiceImpl implements IBrandService 
{
    @Autowired
    private BrandMapper brandMapper;

    /**
     * 查询品牌数据中心
     * 
     * @param id 品牌数据中心主键
     * @return 品牌数据中心
     */
    @Override
    public Brand selectBrandById(Long id)
    {
        return brandMapper.selectBrandById(id);
    }

    /**
     * 查询品牌数据中心列表
     * 
     * @param brand 品牌数据中心
     * @return 品牌数据中心
     */
    @Override
    public List<Brand> selectBrandList(Brand brand)
    {
        List<Brand> brandList;
        int abnormal = 0;
        brandList = brandMapper.selectBrandSumList(brand);
        int total = brandMapper.selectCountBrand();
        int normal = brandMapper.selectCountNormalBrand(brand);
        if(StringUtils.isNotNull(brand) && StringUtils.isNotEmpty(brand.getBrandName())) {
            abnormal = 1 - normal;
        } else {
            abnormal = total- normal;
        }
        brandList.get(0).setNormalNumber(normal);
        brandList.get(0).setAbnormalNumber(abnormal);
        brandList.get(0).setBrandNumber(total);

        if (total > 0) {
            BigDecimal newNumber = new BigDecimal(normal * 100).divide(new BigDecimal(total),1,BigDecimal.ROUND_HALF_UP);
            brandList.get(0).setPercent(newNumber);
        } else {
            brandList.get(0).setPercent(new BigDecimal(0));
        }
        return brandList;
    }

    /**
     * 新增品牌数据中心
     * 
     * @param brand 品牌数据中心
     * @return 结果
     */
    @Override
    public int insertBrand(Brand brand)
    {
        brand.setCreateTime(DateUtils.getNowDate());
        return brandMapper.insertBrand(brand);
    }

    /**
     * 修改品牌数据中心
     * 
     * @param brand 品牌数据中心
     * @return 结果
     */
    @Override
    public int updateBrand(Brand brand)
    {
        brand.setUpdateTime(DateUtils.getNowDate());
        return brandMapper.updateBrand(brand);
    }

    /**
     * 批量删除品牌数据中心
     * 
     * @param ids 需要删除的品牌数据中心主键
     * @return 结果
     */
    @Override
    public int deleteBrandByIds(Long[] ids)
    {
        return brandMapper.deleteBrandByIds(ids);
    }

    /**
     * 删除品牌数据中心信息
     * 
     * @param id 品牌数据中心主键
     * @return 结果
     */
    @Override
    public int deleteBrandById(Long id)
    {
        return brandMapper.deleteBrandById(id);
    }
}
